package com.xpec.c4.db.model.basic;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public class SlotBasicGameModel extends BasicGameModel{

	/**
	 * 
	 */
	private static final long serialVersionUID = -846389124282349082L;

	/**館別**/
	protected String halltype;
	/**幣值比*/
	protected BigDecimal gainRate;
	/**機台座位號碼**/
	protected int machineid;
	/**當前使用guid**/
	protected String guid;
	/**機台當前狀態(0:空位 1:有人 2:保留 3:離線保留 4:離線SPIN)**/
	protected int seatstat;
	/**離線保留過期時間**/
	protected long keepout_time;
	/**性別**/
	protected boolean gender;
	/**匿稱**/
	protected String nickname;

	/** 總JP抽取：押注進 JP 的金額加總 */
	protected BigDecimal betToJpSum;

	/** 總彩金：所有 JP 支出金額加總 */
	protected BigDecimal jpPayoutSum;
	
	/**機器人JP貢獻*/
	protected BigDecimal robotJPDraw;
	
	/********************** 正式幣 **************************/
	/**總押注**/
	protected BigDecimal totalbet;
	/**收入(totalbet - expend**/
	protected BigDecimal income;
	/**支出**/
	protected BigDecimal payout;
	/**當前水錢(totalbet - expend)**/
	protected BigDecimal waterpool;
	
	/**機台歷史總押注**/
	protected BigDecimal allbet;
	/**機台歷史總收入**/
	protected BigDecimal allincome;
	/**機台歷史總支出**/
	protected BigDecimal allpayout;
	/**機台歷史總轉數**/
	protected BigDecimal allspin;
	
/********************** 正式幣 - 吐水相關*************************/
	
	/**上次吐水結束點**/
	protected BigDecimal pourBase;
	
	/**吐水啟動值**/
	protected BigDecimal pourStart;

	/**當次吐水值(小於0會停止，移到用囤水補還)**/
	protected BigDecimal pourTotal;
	
	/**吐水狀態**/
	protected String pourState;
	
	/********************** 正式幣 - 菜鳥吐水相關*************************/
	/**上次吐水結束點**/
	protected BigDecimal rookie_pourBase;
	
	/**吐水啟動值**/
	protected BigDecimal rookie_pourStart;

	/**當次吐水值(小於0會停止，移到用囤水補還)**/
	protected BigDecimal rookie_pourTotal;
	
	/**吐水狀態**/
	protected String rookie_pourState;
	
	/**菜鳥水庫值**/
	protected BigDecimal rookie_waterpool;

	/********************** 道具 **************************/
	/**總押注**/
	protected BigDecimal itembet;
	/**收入(totalbet - expend**/
	protected BigDecimal itemincome;
	/**支出**/
	protected BigDecimal itempayout;
	/**當前水錢(totalbet - expend)**/
	protected BigDecimal itemwaterpool;
	/**機台歷史總押注**/
	protected BigDecimal itemallbet;
	/**機台歷史總收入**/
	protected BigDecimal itemallincome;
	/**機台歷史總支出**/
	protected BigDecimal itemallpayout;
	/**機台歷史總轉數**/
	protected BigDecimal itemallspin;
	
	/**使用道具的rollback */
	protected String useItemDataRollBack; 
	
	/********************** 體驗幣 **************************/
	/**總押注**/
	protected BigDecimal trialbet;
	/**收入(totalbet - expend**/
	protected BigDecimal trialincome;
	/**支出**/
	protected BigDecimal trialpayout;
	/**當前水錢(totalbet - expend)**/
	protected BigDecimal trialwaterpool;
	
	/**機台歷史總押注**/
	protected BigDecimal trialallbet;
	/**機台歷史總收入**/
	protected BigDecimal trialallincome;
	/**機台歷史總支出**/
	protected BigDecimal trialallpayout;
	/**機台歷史總轉數**/
	protected BigDecimal trialallspin;
	
/********************** 體驗幣 - 吐水相關*************************/
	
	/**上次吐水結束點**/
	protected BigDecimal trialpourBase;
	
	/**吐水啟動值**/
	protected BigDecimal trialpourStart;

	/**當次吐水值(小於0會停止，移到用囤水補還)**/
	protected BigDecimal trialpourTotal;
	
	/**吐水狀態**/
	protected String trialpourState;

	/************** 機台本身相關 ******************/
	/**玩家機台設定**/
	protected String gameoption;
	
	/**盤面記錄**/
	protected String screensymbol;
	
	/**機台歷史記錄*/
	protected String record;
	
	/**當前賠率表**/
	protected String reelsetID;
	
	/**更新時間**/
	protected long modify_time;
	
	/**創建時間**/
	protected long create_time;
	
	/**保留過期時間**/
	protected long keep_expried;
	
	/**高中低及吐水表記錄key**/
	protected String rtpidxkey;
	
	/**************正式幣 賠率相關 **************/
	
	//本次儲水區間
	protected String waterpool_range;
	
	//本次倒水比例
	protected int waterpool_feedback;
	
	/**************體驗幣 賠率相關 **************/
	
	//本次儲水區間
	protected String trialwaterpool_range;
	
	//本次倒水比例
	protected int trialwaterpool_feedback;

	/************** 菜鳥賠率相關 **************/
	
	//本次儲水區間
	protected String rookie_waterpool_range;
	
	//本次倒水比例
	protected int rookie_waterpool_feedback;
	
	@Column(name="trial_waterpool_range" , columnDefinition="VARCHAR(64) default \'\'")
	public String getTrialwaterpool_range() {
		return trialwaterpool_range;
	}

	public void setTrialwaterpool_range(String trialwaterpool_range) {
		this.trialwaterpool_range = trialwaterpool_range;
	}

	public int getTrialwaterpool_feedback() {
		return trialwaterpool_feedback;
	}

	public void setTrialwaterpool_feedback(int trialwaterpool_feedback) {
		this.trialwaterpool_feedback = trialwaterpool_feedback;
	}
	
	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialpourBase() {
		return trialpourBase;
	}

	public void setTrialpourBase(BigDecimal trialpourBase) {
		this.trialpourBase = trialpourBase;
	}
	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialpourStart() {
		return trialpourStart;
	}

	public void setTrialpourStart(BigDecimal trialpourStart) {
		this.trialpourStart = trialpourStart;
	}
	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialpourTotal() {
		return trialpourTotal;
	}

	public void setTrialpourTotal(BigDecimal trialpourTotal) {
		this.trialpourTotal = trialpourTotal;
	}
	@Column(name="trial_pourState" , columnDefinition="VARCHAR(32) default 'CLOSE'")
	public String getTrialpourState() {
		return trialpourState;
	}

	public void setTrialpourState(String trialpourState) {
		this.trialpourState = trialpourState;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getRookie_waterpool() {
		return rookie_waterpool;
	}

	public void setRookie_waterpool(BigDecimal rookie_waterpool) {
		this.rookie_waterpool = rookie_waterpool;
	}
	
	@Column(name="rookie_waterpool_range" , columnDefinition="VARCHAR(64) default \'\'")
	public String getRookie_waterpool_range() {
		return rookie_waterpool_range;
	}

	public void setRookie_waterpool_range(String rookie_waterpool_range) {
		this.rookie_waterpool_range = rookie_waterpool_range;
	}
	
	public int getRookie_waterpool_feedback() {
		return rookie_waterpool_feedback;
	}

	public void setRookie_waterpool_feedback(int rookie_waterpool_feedback) {
		this.rookie_waterpool_feedback = rookie_waterpool_feedback;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getRookie_pourBase() {
		return rookie_pourBase;
	}

	public void setRookie_pourBase(BigDecimal rookie_pourBase) {
		this.rookie_pourBase = rookie_pourBase;
	}
	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getRookie_pourStart() {
		return rookie_pourStart;
	}

	public void setRookie_pourStart(BigDecimal rookie_pourStart) {
		this.rookie_pourStart = rookie_pourStart;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getRookie_pourTotal() {
		return rookie_pourTotal;
	}

	public void setRookie_pourTotal(BigDecimal rookie_pourTotal) {
		this.rookie_pourTotal = rookie_pourTotal;
	}

	@Column(name="rookie_pourState" , columnDefinition="VARCHAR(32) default 'CLOSE'")
	public String getRookie_pourState() {
		return rookie_pourState;
	}

	public void setRookie_pourState(String rookie_pourState) {
		this.rookie_pourState = rookie_pourState;
	}
	
	
	@Column(name="rtpidxkey" , columnDefinition="VARCHAR(64) default \'\'")
	public String getRtpidxkey() {
		return rtpidxkey;
	}

	public void setRtpidxkey(String rtpidxkey) {
		this.rtpidxkey = rtpidxkey;
	}

	@Column(columnDefinition="bigint default 0")
	public long getKeep_expried() {
		return keep_expried;
	}

	public void setKeep_expried(long keep_expried) {
		this.keep_expried = keep_expried;
	}
	
	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getPourBase() {
		return pourBase;
	}

	public void setPourBase(BigDecimal pourBase) {
		this.pourBase = pourBase;
	}

	
	@Column(name="pourState" , columnDefinition="VARCHAR(32) default 'CLOSE'")
	public String getPourState() {
		return pourState;
	}

	public void setPourState(String pourState) {
		this.pourState = pourState;
	}
	
	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getPourStart() {
		return pourStart;
	}

	public void setPourStart(BigDecimal pourStart) {
		this.pourStart = pourStart;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getPourTotal() {
		return pourTotal;
	}

	public void setPourTotal(BigDecimal pourTotal) {
		this.pourTotal = pourTotal;
	}
	
	
	/**
	 * 本次水庫區間
	 * @return
	 */
	@Column(name="waterpool_range" , columnDefinition="VARCHAR(255) default \'\'")
	public String getWaterpool_range() {
		return waterpool_range;
	}

	public void setWaterpool_range(String waterpool_range) {
		this.waterpool_range = waterpool_range;
	}

	/**
	 * 本次吐水回饋比
	 * @return
	 */
	@Column(columnDefinition="int default 0")
	public int getWaterpool_feedback() {
		return waterpool_feedback;
	}

	public void setWaterpool_feedback(int waterpool_feedback) {
		this.waterpool_feedback = waterpool_feedback;
	}

	public String getHalltype() {
		return halltype;
	}

	public void setHalltype(String halltype) {
		this.halltype = halltype;
	}

	public int getMachineid() {
		return machineid;
	}

	public void setMachineid(int machineid) {
		this.machineid = machineid;
	}
	
	@Column(name="guid" , columnDefinition="VARCHAR(40) default \'\'")
	public String getGuid() {
		return guid;
	}

	public void setGuid(String guid) {
		this.guid = guid;
	}

	@Column(columnDefinition="int default 0")
	public int getSeatstat() {
		return seatstat;
	}

	public void setSeatstat(int seatstat) {
		this.seatstat = seatstat;
	}

	@Column(columnDefinition="int default 0")
	public long getKeepout_time() {
		return keepout_time;
	}

	public void setKeepout_time(long keepout_time) {
		this.keepout_time = keepout_time;
	}

	@Column(name="gender" , nullable = false , columnDefinition="BOOLEAN default 0")
	public boolean getGender() {
		return gender;
	}

	public void setGender(boolean gender) {
		this.gender = gender;
	}

	@Column(name="nickname" , columnDefinition="VARCHAR(50) default \'\'")
	public String getNickname() {
		return nickname;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	
	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getBetToJpSum() {
		return betToJpSum;
	}

	public void setBetToJpSum(BigDecimal betToJpSum) {
		this.betToJpSum = betToJpSum;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getJpPayoutSum() {
		return jpPayoutSum;
	}

	public void setJpPayoutSum(BigDecimal jpPayoutSum) {
		this.jpPayoutSum = jpPayoutSum;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTotalbet() {
		return totalbet;
	}

	public void setTotalbet(BigDecimal totalbet) {
		this.totalbet = totalbet;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getIncome() {
		return income;
	}

	public void setIncome(BigDecimal income) {
		this.income = income;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getPayout() {
		return payout;
	}

	public void setPayout(BigDecimal payout) {
		this.payout = payout;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getWaterpool() {
		return waterpool;
	}

	public void setWaterpool(BigDecimal waterpool) {
		this.waterpool = waterpool;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getAllbet() {
		return allbet;
	}

	public void setAllbet(BigDecimal allbet) {
		this.allbet = allbet;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getAllincome() {
		return allincome;
	}

	public void setAllincome(BigDecimal allincome) {
		this.allincome = allincome;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getAllpayout() {
		return allpayout;
	}

	public void setAllpayout(BigDecimal allpayout) {
		this.allpayout = allpayout;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getAllspin() {
		return allspin;
	}

	public void setAllspin(BigDecimal allspin) {
		this.allspin = allspin;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItembet() {
		return itembet;
	}

	public void setItembet(BigDecimal itembet) {
		this.itembet = itembet;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItemincome() {
		return itemincome;
	}

	public void setItemincome(BigDecimal itemincome) {
		this.itemincome = itemincome;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItempayout() {
		return itempayout;
	}

	public void setItempayout(BigDecimal itempayout) {
		this.itempayout = itempayout;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItemwaterpool() {
		return itemwaterpool;
	}

	public void setItemwaterpool(BigDecimal itemwaterpool) {
		this.itemwaterpool = itemwaterpool;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItemallbet() {
		return itemallbet;
	}

	public void setItemallbet(BigDecimal itemallbet) {
		this.itemallbet = itemallbet;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItemallincome() {
		return itemallincome;
	}

	public void setItemallincome(BigDecimal itemallincome) {
		this.itemallincome = itemallincome;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItemallpayout() {
		return itemallpayout;
	}

	public void setItemallpayout(BigDecimal itemallpayout) {
		this.itemallpayout = itemallpayout;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getItemallspin() {
		return itemallspin;
	}

	public void setItemallspin(BigDecimal itemallspin) {
		this.itemallspin = itemallspin;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialbet() {
		return trialbet;
	}

	public void setTrialbet(BigDecimal trialbet) {
		this.trialbet = trialbet;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialincome() {
		return trialincome;
	}

	public void setTrialincome(BigDecimal trialincome) {
		this.trialincome = trialincome;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialpayout() {
		return trialpayout;
	}

	public void setTrialpayout(BigDecimal trialpayout) {
		this.trialpayout = trialpayout;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialwaterpool() {
		return trialwaterpool;
	}

	public void setTrialwaterpool(BigDecimal trialwaterpool) {
		this.trialwaterpool = trialwaterpool;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialallbet() {
		return trialallbet;
	}

	public void setTrialallbet(BigDecimal trialallbet) {
		this.trialallbet = trialallbet;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialallincome() {
		return trialallincome;
	}

	
	public void setTrialallincome(BigDecimal trialallincome) {
		this.trialallincome = trialallincome;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialallpayout() {
		return trialallpayout;
	}

	public void setTrialallpayout(BigDecimal trialallpayout) {
		this.trialallpayout = trialallpayout;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getTrialallspin() {
		return trialallspin;
	}

	public void setTrialallspin(BigDecimal trialallspin) {
		this.trialallspin = trialallspin;
	}

	@Column(name="gameoption" , columnDefinition="VARCHAR(512) default \'\'")
	public String getOption() {
		return gameoption;
	}

	public void setOption(String option) {
		this.gameoption = option;
	}

	@Column(name="screensymbol" , columnDefinition="VARCHAR(256) default \'\'")
	public String getScreensymbol() {
		return screensymbol;
	}

	public void setScreensymbol(String screensymbol) {
		this.screensymbol = screensymbol;
	}

	@Column(name="record" , columnDefinition="VARCHAR(1024) default \'\'")
	public String getRecord() {
		return record;
	}

	public void setRecord(String record) {
		this.record = record;
	}

	@Column(name="reelsetID" , columnDefinition="VARCHAR(30) default \'\'")
	public String getReelsetID() {
		return reelsetID;
	}

	public void setReelsetID(String reelsetID) {
		this.reelsetID = reelsetID;
	}

	public long getModify_time() {
		return modify_time;
	}

	public void setModify_time(long modify_time) {
		this.modify_time = modify_time;
	}

	public long getCreate_time() {
		return create_time;
	}

	public void setCreate_time(long create_time) {
		this.create_time = create_time;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 0.0")
	public BigDecimal getRobotJPDraw() {
		return robotJPDraw;
	}

	public void setRobotJPDraw(BigDecimal robotJPDraw) {
		this.robotJPDraw = robotJPDraw;
	}

	@Column(length=4000)
	public String getUseItemDataRollBack() {
		return useItemDataRollBack;
	}

	public void setUseItemDataRollBack(String useItemDataRollBack) {
		this.useItemDataRollBack = useItemDataRollBack;
	}

	@Column(precision = 19, scale = 2 , columnDefinition="DECIMAL(19,2) default 1.0")
	public BigDecimal getGainRate() {
		return gainRate;
	}

	public void setGainRate(BigDecimal gainRate) {
		this.gainRate = gainRate;
	}
	
}
